/*
* @Author:yangian
* */
/*
* 函数 对象 面向对象 设计原理 闭包
* 面相对象：封装、继承、多态
*
*面向对象：不存在独立的函数，所有的函数都必须是某个对象的方法
* */
function mquery(arg) {
    this.event=[];
    switch (typeof arg)
    {
        case "function"://在$()中传入一个函数表示window.onload之后自执行该函数
            myAddevent(window,"load",arg);
            break;
        case "string"://传入一个字符串，用于选择元素，并放回一个jQuery对象
            switch (arg.charAt(0)){
                case "#":
                    this.event=document.getElementById(arg.substring(1));
                    break;
                case ".":
                    this.event=getClass(document,arg.substring(1));
                    break;
            }
            break;
        case "object":
            break;
    }
}

mquery.prototype={
    click:function (fn) {
        for(var i=0;i<this.event.length;i++){
            myAddevent(this.event[i],'click',fn);
        }
    }
};

//遍历所有的元素， 查找指定的class(document.getElementByClassName('className'))
function getClass(ohtml,oclass) {
    var myElement=ohtml.getElementsByTagName("*");
    var result=[];
    for(var i=0;i<myElement.length;i++){
        if(myElement[i].className==oclass){
            result.push(myElement[i]);
        }
    }
    return result;
}

function $(arg) {
    return new mquery(arg);
}
//给函数绑定事件
function myAddevent(obj,sev,fn) {
    obj.addEventListener(sev,fn,false);
}